﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DECOR.BL.BE;
using DECOR.DL.DALCF;

namespace DECOR.BL.BC
{
    public class MaterialBC
    {
        #region Singleton
        private MaterialBC() { }
        private static MaterialBC _instance = null;
        public static MaterialBC Instance
        {
            get { return (_instance == null) ? _instance = new MaterialBC() : _instance; }
        }
        #endregion

        public MaterialBE leerMaterial(string pCodigo)
        {
            return DaoFactory.MaterialDALC.leerMaterial(pCodigo.PadLeft(18, '0'), "", "", ""); //WEBDIST
        }

        public MaterialBE leerMaterial(string pCodigo, string pOrgVtas, string pCanalDist)
        {
            return DaoFactory.MaterialDALC.leerMaterial(pCodigo.PadLeft(18, '0'), pOrgVtas, pCanalDist, ""); //WEBDIST
        }

        //WEBDIST
        public MaterialBE leerMaterial(string pCodigo, string pOrgVtas, string pCanalDist, string usuarioWeb)
        {
            return DaoFactory.MaterialDALC.leerMaterial(pCodigo.PadLeft(18, '0'), pOrgVtas, pCanalDist, usuarioWeb);
        }

        public List<MaterialBE> buscarMateriales(string pCodAnterior, string pNombre, string pJerarquia)
        {
            return DaoFactory.MaterialDALC.buscarMateriales(pCodAnterior, pNombre, pJerarquia, "", "", ""); //WEBDIST
        }

        public List<MaterialBE> buscarMateriales(string pCodAnterior, string pNombre, string pJerarquia, string pOrgVtas, string pCanalDist, string usuarioWeb)
        {
            return DaoFactory.MaterialDALC.buscarMateriales(pCodAnterior, pNombre, pJerarquia, pOrgVtas, pCanalDist, usuarioWeb); //WEBDIST
        }

        /// <summary>
        /// búsqueda x nombre
        /// </summary>
        /// <param name="pNombre">parte del nombre</param>
        /// <returns></returns>
        public List<MaterialBE> buscarMateriales(string pNombre)
        {
            return DaoFactory.MaterialDALC.buscarMateriales("", pNombre, "", "", "", ""); //WEBDIST
        }

        public List<GenericBE> listarGruposMat()
        {
            return DaoFactory.MaterialDALC.buscarGrupos("");
        }
        public GenericBE leerGruposMat(string pCodGrupo)
        {
            List<GenericBE> lst = DaoFactory.MaterialDALC.buscarGrupos(pCodGrupo);
            if (lst.Count == 1)
            {
                return lst[0];
            }
            else
            {
                return null;
            }
        }

        /// <summary>
        /// Ejecuta RFC ZCM_SD_003
        /// </summary>
        /// <param name="pCod">Código SAP del material</param>
        /// <param name="pCodAnt">Código antiguo del material</param>
        /// <param name="pDesc"></param>
        /// <param name="pJerarquia"></param>
        /// <param name="pOrgVtas"></param>
        /// <param name="pCanalDist"></param>
        /// <param name="usuarioWeb"></param>
        /// <returns></returns>
        public List<MaterialBE> buscarMateriales(string pCod, string pCodAnt, string pDesc, string pJerarquia, string pOrgVtas, string pCanalDist, string usuarioWeb)
        {
            return DaoFactory.MaterialDALC.buscarMateriales(pCod, pCodAnt, pDesc, pJerarquia, pOrgVtas, pCanalDist, usuarioWeb);
        }

        public List<EnlaceMaterialBE> buscarMaterialesAdicionales(string pNumMat, string pWerks)
        {
            return DaoFactory.MaterialDALC.buscarMaterialesAdicionales(pNumMat,  pWerks);
        }
    }
}
